﻿#region Using Declaration

using System.Collections.Generic;

#endregion Using Declaration

namespace T4_Eind_programma
{
    public class Mengbatch
    {
        #region Variable Declaration

        private Doeltank doeltank;
        private bool handmatig;
        private int hoeveelheidVaten;
        private bool klaar;
        private int mengtijd;
        private int nummer;
        private string productcode;
        private int siroopPercentage;
        private Smaak smaak;
        private bool verwarmen;
        private int verwarmTijd;

        private List<Vulbatch> vulbatchList = new List<Vulbatch>();

        #endregion Variable Declaration

        #region Properties

        public Doeltank Doeltank
        {
            get { return doeltank; }
            set { doeltank = value; }
        }

        public bool Handmatig
        {
            get { return handmatig; }
            set { handmatig = value; }
        }

        public int Hoeveelheid
        {
            get { return hoeveelheidVaten; }
            set { hoeveelheidVaten = value; }
        }

        public bool Klaar
        {
            get { return klaar; }
            set { klaar = value; }
        }

        public int Mengtijd
        {
            get { return mengtijd; }
            set { mengtijd = value; }
        }

        public int Nummer
        {
            get { return nummer; }
            set { nummer = value; }
        }

        public string Productcode
        {
            get { return productcode; }
            set { productcode = value; }
        }

        public int SiroopPercentage
        {
            get { return siroopPercentage; }
            set { siroopPercentage = value; }
        }

        public Smaak Smaak
        {
            get { return smaak; }
            set { smaak = value; }
        }

        public bool Verwarmen
        {
            get { return verwarmen; }
            set { verwarmen = value; }
        }

        public int VerwarmTijd
        {
            get { return verwarmTijd; }
            set { verwarmTijd = value; }
        }

        public List<Vulbatch> VulbatchList
        {
            get { return vulbatchList; }
            set { vulbatchList = value; }
        }

        #endregion Properties

        #region Constructors

        public Mengbatch(int nummer, string productcode, Smaak smaak, int hoeveelheid, int siroopPercentage,
            int mengtijd, bool verwarmen, bool handmatig, Doeltank doeltank, bool klaar, int verwarmTijd)
        {
            this.doeltank = doeltank;
            this.handmatig = handmatig;
            this.hoeveelheidVaten = hoeveelheid;
            this.klaar = klaar;
            this.mengtijd = mengtijd;
            this.nummer = nummer;

            this.productcode = productcode;

            this.siroopPercentage = siroopPercentage;

            this.smaak = smaak;

            this.verwarmen = verwarmen;
            this.verwarmTijd = verwarmTijd;
        }

        public Mengbatch(int nummer, bool klaar)
        {
            this.nummer = nummer;
            this.klaar = false;
        }

        #endregion Constructors

        public void GenereerProductcode(int ordernummer)
        {
            productcode = "O" + ordernummer + "B" + nummer.ToString() + "-" + smaak.Naam[0].ToString() + hoeveelheidVaten.ToString() + siroopPercentage.ToString();
        }

        public void GenereerVulbatchList()
        {
            vulbatchList.Clear();
            int vatenperdoeltank = 6;
            int count = 0;
            int t = hoeveelheidVaten;
            while (t >= vatenperdoeltank || t >= 1)
            {
                if (t >= vatenperdoeltank)
                {
                    vulbatchList.Add(new Vulbatch(count, nummer, vatenperdoeltank, false));
                    t -= vatenperdoeltank;
                    count++;
                }
                if (t < vatenperdoeltank && t >= 1)
                {
                    vulbatchList.Add(new Vulbatch(count, nummer, t, false));
                    t -= t;
                }
            }
        }
    }
}